//
//  CAMediaTiming.swift
//  Documentation
//
//  Created by Toj on 8/9/23.
//

import UIKit

public protocol CAMediaTiming {

    
    /// 开始时间
    var beginTime: CFTimeInterval = 0

    /// 执行时间
    var duration: CFTimeInterval = 0

    /// 执行速度
    var speed: Float = 1

    /// 偏移时间
    var timeOffset: CFTimeInterval = 0

    /// 执行次数
    var repeatCount: Float = 0

    /// 重复时间, 在该时间内动画一直执行，不计次数
    var repeatDuration: CFTimeInterval = 0

    /// 执行是否可逆: 正序执行后, 倒序执行
    var autoreverses: Bool = false

    /* Defines how the timed object behaves outside its active duration.
     * Local time may be clamped to either end of the active duration, or
     * the element may be removed from the presentation. The legal values
     * are `backwards', `forwards', `both' and `removed'. Defaults to
     * `removed'. */
    
    /// 用于指定动画在非活动时间段(即动画未执行或完成之前和之后的时间段)的行为
    // removed: fillMode默认值
    // 如果设置了beginTime, 动画从beginTime开始;
    // 如果没有设置, 则立即开始. 动画结束后移除动画
    // backwards: 无论是否立即执行动画, CAMediaTimingFillMode.
    // backwards都会展示动画的第一帧
    // forwards: 像往常一样播放动画, 但将动画的最后一帧保留到屏幕上, 直到你移除动画.
    // both: 是forwards和backwards的组合, 即立即显示动画的第一帧, 动画结束后保留最后一帧.
    var fillMode: CAMediaTimingFillMode = .removed
}
